/**
 * <h3>CampusNewsServiceImpl</h3>
 * <p> 校园新闻服务实现类 </p>
 *
 * <h3>功能描述</h3>
 * <p> 实现了 {@link ICampusNewsService} 接口中定义的校园新闻信息增删改查业务逻辑 </p>
 * <p> 通过调用 {@link CampusNewsMapper} 完成对数据库的操作，支持条件查询、按ID查询、更新、新增和删除等操作 </p>
 *
 * <h3>元数据</h3>
 * <ul>
 *    <li> 作者：郭强</li>
 *    <li> 创建日期：2025年05月20日 21:20:00</li>
 * </ul>
 *
 * <h3>其他信息</h3>
 * <ul>
 *    <li> 参考链接：<a href="https://example.com">官方网页</a></li>
 *    <li> 示例代码：{@code new CampusNewsServiceImpl()} </li>
 * </ul>
 *
 * @apiNote 该类基于 MyBatis Plus 的 ServiceImpl 实现，需确保 CampusNewsMapper 正确注入
 * @implSpec 继承自 {@link ServiceImpl<CampusNewsMapper, CampusNewsDTO>} 并实现 {@link ICampusNewsService} 接口
 * @since 1.0.0
 */

package com.dnndo.system.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dnndo.system.domain.CampusNews;
import com.dnndo.system.domain.dto.CampusNewsDTO;
import com.dnndo.system.mapper.CampusNewsMapper;
import com.dnndo.system.service.ICampusNewsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 校园新闻服务实现类
 */
@Service
public class CampusNewsServiceImpl extends ServiceImpl<CampusNewsMapper, CampusNewsDTO> implements ICampusNewsService {

    private final CampusNewsMapper campusNewsMapper;

    @Autowired
    public CampusNewsServiceImpl(CampusNewsMapper campusNewsMapper) {
        this.campusNewsMapper = campusNewsMapper;
    }

    /**
     * 查询符合条件的校园新闻列表
     *
     * @param dto 封装查询条件的 CampusNews 对象，包含新闻标题、学校ID等过滤字段
     * @return List<CampusNews> 匹配条件的新闻信息列表
     * @see com.dnndo.system.mapper.CampusNewsMapper#selectAllCampusNews(CampusNewsDTO)
     */
    @Override
    public List<CampusNews> selectCampusNewsList(CampusNewsDTO dto) {
        return campusNewsMapper.selectAllCampusNews(dto);
    }

    /**
     * 根据新闻ID查询新闻详细信息
     *
     * @param newsId 新闻ID，用于定位数据库中的唯一记录
     * @return CampusNewsDTO 新闻实体对象，若未找到则返回 null
     * @see com.dnndo.system.mapper.CampusNewsMapper#selectCampusNewsById(Integer)
     */
    @Override
    public CampusNewsDTO selectCampusNewsById(Long newsId) {
        return campusNewsMapper.selectCampusNewsById(Math.toIntExact(newsId));
    }

    /**
     * 更新指定ID的新闻信息
     *
     * @param campusNewsDTO 封装更新数据的 CampusNews 对象，必须包含有效的 newsId 字段
     * @return int 受影响的记录数，通常为 1 表示更新成功
     * @see com.dnndo.system.mapper.CampusNewsMapper#updateCampusNewsById(CampusNewsDTO)
     */
    @Override
    public int updateCampusNewsById(CampusNewsDTO campusNewsDTO) {
        return campusNewsMapper.updateCampusNewsById(campusNewsDTO);
    }

    /**
     * 新增一条新闻记录到数据库
     *
     * @param campusNewsDTO 封装新增数据的 CampusNews 对象，需确保字段完整性
     * @return int 受影响的记录数，通常为 1 表示插入成功
     * @see com.dnndo.system.mapper.CampusNewsMapper#insertCampusNews(CampusNewsDTO)
     */
    @Override
    public int insertCampusNews(CampusNewsDTO campusNewsDTO) {
        return campusNewsMapper.insertCampusNews(campusNewsDTO);
    }

    /**
     * 根据新闻ID删除对应的记录
     *
     * @param newsId 新闻唯一标识符
     * @return int 受影响的记录数，通常为 1 表示删除成功
     * @see com.dnndo.system.mapper.CampusNewsMapper#deleteCampusNewsById(Integer)
     */
    @Override
    public int deleteCampusNewsById(Integer newsId) {
        return campusNewsMapper.deleteCampusNewsById(newsId);
    }
}
